package com.atguigu.bigdata.scala.chapter06

class UserXX {

}
object Scala03_Object_Package {
        def main(args: Array[String]): Unit = {
          testPackageObject()
            // TODO 面向对象编程 - 包
            /*
              包的起名：
              域名的反写 + 项目名称 + 模块名称 + 程序类型
              com.atguigu.test.user.bean

              java中的包的作用：
              1. 类的分包管理
                 UserBean, StringUtil
              2. 区分同名的类
                 java.util.Date, java.sql.Date
              3. 访问权限
                 包访问权限

              问题：
              1. 包名必须和源码物理存放路径相同
              2. 如果类名起的有规律，分包管理的功能可有可无
              3. 如果类名起的有规律，也就区分类
              4. 访问权限基本不用

              java中的package的语法功能不是很强大，所以scala语法对package语法进行了扩展

              1. package关键字在scala中可以多次声明,形成包的上下级关系
                 可以使用大括号进行范围的设定
              2. 源码中，如果子包访问父包中的内容，是不需要import导入,形成了作用域的效果
              3. scala中包路径和源码物理路径没有关系了
                 jvm在执行时并不会关心源码在什么位置，关心的是class文件的位置
              4. scala万物皆对象，所以将包也能当成对象来用
                 包对象中可以声明属性和方法, 在这个包中的任意地方都可以访问
             */
            //new UserXX()
            testPackageObject()

        }
    }



